﻿#define _CRT_SECURE_NO_WARNINGS 1


//牛客网 微信红包
//class Gift {
//public:
//    int getValue(vector<int> gifts, int n) {
//        int count = 0;
//        int maxval = 0;
//        for (auto x : gifts)
//        {
//            if (count == 0)
//            {
//                count = 1;
//                maxval = x;
//            }
//            else
//            {
//                maxval == x ? count++ : count--;
//            }
//        }
//
//        int t = 0;
//        for (auto x : gifts)
//        {
//            if (x == maxval)
//            {
//                t++;
//            }
//        }
//
//        if (t > n / 2) return maxval;
//        else return 0;
//    }
//};
//
//class Gift {
//public:
//    int getValue(vector<int> gifts, int n) {
//        sort(gifts.begin(), gifts.end());
//
//        int t = 0;
//        for (auto x : gifts)
//        {
//            if (x == gifts[n / 2]) t++;
//        }
//        if (t > n / 2) return gifts[n / 2];
//        else return 0;
//    }
//};

//#include<iostream>
//using namespace std;
//union hh
//{
//	char ch[6];
//	float a;
//	float b;
//};
//
//struct xx { double w; union hh u; float v[5]; }vh;
//
//int main()
//{
//	cout << sizeof(vh) << endl;
//	system("pause");
//}

/*
19A.﻿给定一个字符串s，
先要对字符串第i个到第j个字符中查找是否存在字符ch，若存在，则删除其中第一个字符ch，若不存在，则在第j个字符后插入字符ch
输入说明： 第一行输入字符串s(长度len < 1000)。
第二行输入正整数N和字符ch，N表示其后有N次操作(N < 100)。
从第三行开始，其后N行每行有两个正整数i和j(1 <= i <= j <= len)
输出说明： 输出N次操作之后的字符串
*/
//abcdefg
//2 d
//1 3
//2 6
//输出样例：
//abcdefg
//abcdefg-- > abcddefg-- > abcdefg
//#include<iostream>
//using namespace std;
//const int N = 1000;
//
//void erase(char* arr, int index)
//{
//	int len = strlen(arr);
//	while (index < len)
//	{
//		arr[index] = arr[index + 1];
//		index++;
//	}
//	arr[len - 1] = '\0';
//}
//void insert(char* arr, int index,char ch)
//{
//	int len = strlen(arr);
//	while (index <= len)
//	{
//		arr[len + 1] = arr[len];
//		len--;
//	}
//	arr[index] = ch;
//}
//int main()
//{
//	char arr[N];
//	scanf("%s", arr);
//	while (getchar() != '\n');
//	size_t len = strlen(arr);
//	int n;
//	char ch;
//	scanf("%d", &n);
//	while (getchar() != '\n');
//
//	scanf("%c", &ch);
//	while (getchar() != '\n');
//
//	for (int k = 0; k < n; k++)
//	{
//		int x, y;
//		scanf("%d%d", &x, &y);
//		while (getchar() != '\n');
//
//		bool flag = true;
//		for (int i = x - 1; i < y ; i++)
//		{
//			if (arr[i] == ch)
//			{
//				erase(arr, i);
//				flag = false;
//				break;
//
//			}
//		}
//		if (flag)
//		{
//			insert(arr, y,ch);
//		}
//	}
//	printf("%s\n", arr);
//	system("pause");
//}


/*
"表达式求值
老式的计算机只能按照固定次序进行运算，华安大学就有这样一台老式计算机，
计算模式为A @ B #C，@和#为输入的运算符（可能是 + 、 * 、 % ，须考虑计算优先级），现给出A，B，C的数值以及@和#对应的运算符，请你编写程序，验证老式计算机的运行结果。

输入说明：
第一行是一个整数N（ | N | ≤10000），表示有N组计算数据需要处理，接下来N行，每行是相应的数据，包括三个整数和两个运算符，分别对应A、@、B、#和C。

输出说明：
对每行输入的数据，输出计算结果。

输入样例：
3
1 + 2 * 3
3 % 2 + 1
5 + 7 % 9
输出样例：
7
2
12

按照最后一次提交的代码为评分标准。"
*/

/*
"信息整理
某机房上线了一套系统，和每台计算机都相连，以便监控各计算机相关外设的运行状态。各计算机的返回信号映射为一个0 - 15的数，
其中从左到右第0位为1表示键盘故障、第1位为1表示鼠标故障、第2位为1表示显示故障、第3位为1表示声音故障。
如7对应0111，表示鼠标、显示、声音同时故障。
先输入这N台计算机的状态，请统计显示故障但声音正常的计算机数量。

输入说明：
第一行是一个N（0 < N≤1000），表示计算机的数量。接下来N行，每行是一个0 - 15的数字。
    输出说明：
    一个整数，表示机房里显示故障但声音正常的计算机数量。
    输入样例：
    5
    12  //1100
    3   //0011
    1   //0001
    2   //0010
    4   //0100
    输出样例：
    1
    按照最后一次提交的代码为评分标准。"
    */
//#include<iostream>
//using namespace std;
//int main()
//{
//    int n;
//    int count = 0;
//    scanf("%d", &n);
//    for (int i = 0; i < n; i++)
//    {
//        int x;
//        scanf("%d", &x);
//        if ((x & 1)==0 && (x & 2) == 2) count++;
//    }
//    cout << count << endl;
//    system("pause");
//}

/*
"子串替换
给定一个字符串S，和一个特定子串S1，如果该子串第k次出现则进行替换（ababa 视为出现了2次子串aba），
替换规则是将子串中的每个英文字母修改为循环后移1位的字母（即a换成b，b换成c，依次类推，z换成a，大写字母同样处理），
其他字符不变。现在请你编写程序，输出替换后的字符串；如果不发生替换，输出F。
输入说明：
第一行输入整数k(0 < k≤256)、子串S1（S1不包含空格，长度不超过256），中间以空格间隔。
    第二行是需要处理的字符串S（长度不超过256）。
    输出说明：
    输出替换后的字符串；如果不发生替换，输出F。

    输入样例：
    2  re
    There is a small tree in the garden.
    输出样例：
    There is a small tsfe in the garden.

    按照最后一次提交的代码为评分标准。"
*/

//int main()
//{
//    int n;
//    string s1;
//    cin >> n;
//    while (getchar() != '\n');
//    getline(cin, s1);
//    string str;
//    getline(cin, str);
//    int k = 0;
//    int i = 0;
//    while (n--)
//    {
//        size_t index = str.find(s1, i);
//        if (index == string::npos)
//        {
//            cout << "F" << endl;
//            return 0;
//        }
//        i = index + s1.size();
//    }
//    i -= s1.size();
//    for (int j = i; j < i + s1.size(); j++)
//    {
//        if (str[i] >= 'a' && str[i] <= 'z')
//        {
//            if (str[i] == 'z') str[i] = 'a';
//            else str[i] = str[i] + 1;
//        }
//        else if (str[i] >= 'A' && str[i] <= 'Z')
//        {
//            if (str[i] == 'Z') str[i] = 'A';
//            else str[i] = str[i] + 1;
//        }
//    }
//    cout << str << endl;
//    system("pause");
//    
//}

#include<iostream>
#include<string>
using namespace std;
/*
"智能除草
农业植保无人机作为最新的设备，可以加注除草剂进行除草。每次工作可以喷洒边长为K的正方形区域。
现有一块边长为N的正方形农田，将其分成N * N个方格单元，已知每个单元里的杂草数量。求该植保无人机一次工作最多可以除草的数量。

输入说明：
第一行是2个正整数，分别为N和K（1≤K≤N≤1000）。
之后N行N列正整数，表示每个单元中的杂草数量（不超过50）。
输出说明：
该植保无人机一次工作最多可以除草的数量。

输入样例：
5 2
2 2 1 1 1
1 2 1 5 6
6 1 1 4 5
2 6 1 1 1
1 1 1 1 1
输出样例：
20

按照最后一次提交的代码为评分标准。"
*/
#include <iostream>
#include <vector>
#include <algorithm>

//int maxWeedRemoval(int N, int K, const std::vector<std::vector<int>>& field) {
//    int maxRemoval = 0;
//
//    for (int i = 0; i <= N - K; ++i) {
//        for (int j = 0; j <= N - K; ++j) {
//            int removal = 0;
//            // 计算起始位置为 (i, j) 的正方形区域内的杂草数量总和
//            for (int x = i; x < i + K; ++x) {
//                for (int y = j; y < j + K; ++y) {
//                    removal += field[x][y];
//                }
//            }
//            // 更新最大的除草数量
//            maxRemoval = std::max(maxRemoval, std::abs(removal));
//        }
//    }
//
//    return maxRemoval;
//}
//
//int main() {
//    int N, K;
//    std::cin >> N >> K;
//
//    std::vector<std::vector<int>> field(N, std::vector<int>(N));
//    for (int i = 0; i < N; ++i) {
//        for (int j = 0; j < N; ++j) {
//            std::cin >> field[i][j];
//        }
//    }
//
//    int result = maxWeedRemoval(N, K, field);
//    std::cout << result << std::endl;
//
//    return 0;
//}

//class A
//{
//public:
//private:
//    int _a;
//};
//class B : public A
//{
//public:
//    void f()
//    {
//        cout << A::_a << endl;
//    }
//}
//int  main()
//{
//
//}

//#include <iostream>
//using namespace std;
//int main()
//{
//    cout.fill('*');
//    cout.width(8);
//    cout.fill('$');
//    cout << 123 << endl;
//    system("pause");
//    return 0;
//}

/*
假定输入的字符串中只包含字母和@号，请编写程序，将字符串中的前导@符全部移到字符串的尾部。例如：字符串中的内容为：
@@@@ab@CD@G@@@, 移动后，字符串中的内容为：ab@CD@G@@@@@@@。在编写程序时，不得使用C++语言提供的字符串函数。
（输入的字符串不含空格，且字符串长度不大于1000）
输入样例1：@@@@ab@CD@G@@@
输入样例2：abc@d
输出样例1ab@CD@G@@@@@@@
输出样例2：abc@d

*/ 

//int main()
//{
//    char arr[1025] = { 0 };
//    char tmp[1025] = { 0 };
//    scanf("%s", arr);
//    size_t len = strlen(arr);
//    int count = 0;
//    int index = 0;
//    for (; index < len; index++)
//    {
//        if (arr[index] == '@') count++;
//        else break;
//    }
//    for (int i = 0; i < count; i++)
//    {
//        arr[len] = '@';
//        len++;
//    }
//    arr[len] = '\0';
//    len = strlen(arr);
//    for (int i = count; i < len; i++)
//    {
//        printf("%c", arr[i]);
//    }
//    system("pause");
//    return 0;
//}
/*

编写程序，从键盘上输入两个正整数，较大的数为m和较小的数为n, 根据以下公式求P的值，并输出。
(m和n为大于0且小于等于30的整数 
    输入样例1：12 8  
    输入样例2：27 30
    输出样例1：495
    输出样例2：4060 
    */
/*
"编写程序将一个十进制数N转化为八进制，要求：定义Septinary类（八进制类），来表示一个八进制的数及其相关操作，
和十进制的数“逢十进一”类似，八进制的数定义为“逢八进一""。Septinary类的数据成员说明如下
. char* data;//存放八进制数的每一位数，data[0]为最高位，且八进制的位数不超过99位。
2.CreateSeptinary函数由构造函数调用，用于将作为参数传入的十进制数转化为八进制数，并将八进制数的每一位存入data数组中。
3.定义numberToChar成员函数，将一个[0, 7]之间的数转化为对应的ASCII码值。
4.十进制数（大于等于0的整数）在main函数中输入，并在main函数中输出转化后的八进制数。
输入样例1：32
输入样例2 129
输出样例1：40
输出样例2：201"
*/
//#include <iostream>
//using namespace std;
//
//class Septinary {
//private:
//    char* data;  // 存放八进制数的每一位数
//
//public:
//    // 构造函数
//    Septinary(int decimal) {
//        data = new char[100];  // 假设八进制的位数不超过99位
//
//        // 将十进制数转化为八进制，并将每一位存入data数组中
//        int index = 0;
//        while (decimal > 0) {
//            data[index] = numberToChar(decimal % 8);
//            decimal /= 8;
//            index++;
//        }
//    }
//
//    // 将 [0, 7] 之间的数转化为对应的 ASCII 码值
//    char numberToChar(int number) {
//        return '0' + number;
//    }
//
//    
//};
//
//int main() {
//    int decimal;
//    cin >> decimal;
//
//    Septinary sept(decimal);
//    sept.printSeptinary();
//
//    return 0;
//}


#include <iostream>
#include <string>
using namespace std;
int columnNumber(const std::string& columnName) {
    int result = 0;
    for (char c : columnName) {
        result = result * 26 + (c - 'A' + 1);
    }
    return result;
}

int main() {
    std::string column1, column2;
    std::cin >> column1 >> column2;

    int num1 = columnNumber(column1);
    int num2 = columnNumber(column2);

    int diff = num2 - num1 - 1;
    std::cout << diff << std::endl;
    system("pause");
    return 0;
}